Configurable logic platform with multiple reconfigurable regions

ABSTRACT

The following description is directed to a configurable logic platform. In one example, a configurable logic platform includes host logic and a plurality of reconfigurable logic regions. Each reconfigurable region can include hardware that is configurable to implement an application logic design. The host logic can be used for separately encapsulating each of the reconfigurable logic regions. The host logic can include a plurality of data path functions where each data path function can include a layer for formatting data transfers between a host interface and the application logic of a corresponding reconfigurable logic region. The host interface can be configured to apportion bandwidth of the data transfers generated by the application logic of the respective reconfigurable logic regions.

CROSS REFERENCE TO RELATED APPLICATION

This application is a continuation of U.S. patent application Ser. No.16/361,007, filed Mar. 21, 2019, which is a divisional of U.S. patentapplication Ser. No. 15/280,624, filed Sep. 29, 2016 (now U.S. Pat. No.10,282,330), which applications are incorporated herein by reference intheir entirety.

BACKGROUND

Cloud computing is the use of computing resources (hardware andsoftware) which are available in a remote location and accessible over anetwork, such as the Internet. In some arrangements, users are able tobuy these computing resources (including storage and computing power) asa utility on demand. Cloud computing entrusts remote services with auser's data, software and computation. Use of virtual computingresources can provide a number of advantages including cost advantagesand/or the ability to adapt rapidly to changing computing resourceneeds.

The users of large computer systems may have diverse computingrequirements resulting from different use cases. A cloud or computeservice provider can provide various different computer systems havingdifferent types of components with varying levels of performance and/orfunctionality. Thus, a user can select a computer system that canpotentially be more efficient at executing a particular task. Forexample, the compute service provider can provide systems with varyingcombinations of processing performance, memory performance, storagecapacity or performance, and networking capacity or performance. Thefocus of the cloud service provider is to provide generalized hardwarethat can be shared by many different customers. The cloud serviceprovider can be challenged to provide specialized computing hardware forusers while keeping a healthy mix of generalized resources so that theresources can be efficiently allocated among the different users.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a system diagram showing an example of a system including aconfigurable logic platform.

FIG. 2 is a system diagram showing another example of a system includinga configurable logic platform.

FIG. 3 is a system diagram showing an example of a system including alogic repository service for supplying configuration data to aconfigurable logic platform.

FIG. 4 is an example system diagram showing a plurality of virtualmachine instances running in a multi-tenant environment including servercomputers having a configurable logic platform.

FIG. 5 shows further details of the example system of FIG. 4 includingcomponents of a control plane and a data plane for configuring andinterfacing to a configurable hardware platform.

FIG. 6 is a sequence diagram of an example method of fetching,configuring, and using configuration data for configurable hardware in amulti-tenant environment.

FIG. 7 is a flow diagram of an example method of using a configurablehardware platform.

FIG. 8 is a system diagram showing an example of a server computerincluding an integrated circuit with multiple customer logic designsconfigured on the integrated circuit.

FIG. 9 depicts a generalized example of a suitable computing environmentin which the described innovations may be implemented.

DETAILED DESCRIPTION

Some users may desire to use hardware that is proprietary or highlyspecialized for executing the computing tasks. One solution forproviding specialized computing resources within a set of reusablegeneral computing resources is to provide a server computer comprising aconfigurable logic platform (such as by providing a server computer withan add-in card including a field-programmable gate array (FPGA)) as achoice among the general computing resources. As used herein, the termsconfigurable logic platform and configurable hardware platform areinterchangeable. Configurable logic is hardware that can be programmedor configured to perform a logic function that is specified byconfiguration data that is applied to or loaded on the configurablelogic. For example, a user of the computing resources can provide aspecification (such as source code written in a hardware descriptionlanguage) for configuring the configurable logic, the configurable logiccan be configured according to the specification, and the configuredlogic can be used to perform a task for the user. However, allowing auser access to low-level hardware of the computing facility canpotentially introduce security and privacy issues within the computingfacility. As a specific example, a faulty or malicious design from oneuser could potentially cause a denial of service to other users if theconfigured logic caused one or more server computers within thecomputing facility to malfunction (e.g., crash, hang, or reboot) or bedenied network services. As another specific example, a faulty ormalicious design from one user could potentially corrupt or read datafrom another user if the configured logic is able to read and/or writememory of the other user's memory space. As another specific example, afaulty or malicious design from a user could potentially cause theconfigurable logic platform to malfunction if the configured logicincludes a circuit (such as a ring oscillator) that causes the device toexceed a power consumption or temperature specification of theconfigurable logic platform.

As described herein, a compute services facility can include a varietyof computing resources, where one type of the computing resources caninclude a server computer comprising a configurable logic platform. Theconfigurable logic platform can be programmed or configured by a user ofthe computer system so that hardware (e.g., the configurable logic) ofthe computing resource is customized by the user. For example, the usercan program the configurable logic so that it functions as a hardwareaccelerator that is tightly coupled to the server computer. As aspecific example, the hardware accelerator can be accessible via a localinterconnect, such as Peripheral Component Interconnect Express(PCI-Express or PCIe), of the server computer. The user can execute anapplication on the server computer and tasks of the application can beperformed by the hardware accelerator using PCIe transactions. Bytightly coupling the hardware accelerator to the server computer, thelatency between the accelerator and the server computer can be reducedwhich can potentially increase the processing speed of the application.

In one embodiment, the configurable logic platform can be programmed orconfigured by multiple users of the computer system so that theconfigurable hardware can accelerate the applications of multiple usersthat are sharing the computing resource. When multiple users share theresource, additional privacy, security, and availability concerns can beintroduced. For example, one user could potentially throttle anotheruser by consuming an unfair share of the bandwidth between a CPU of theserver computer and the configurable logic platform. As another example,one user could potentially throttle another user by consuming an unfairshare of any shared resources of the configurable logic platform. Asanother example, one user could potentially monitor the activity ofanother user by observing response times or other performance measuresof the configurable logic platform.

The compute services provider can potentially increase the privacy,security, and/or availability of the computing resources by wrapping orencapsulating each user's hardware accelerator (also referred to hereinas application logic) within host logic of the configurable logicplatform. Encapsulating the application logic can include limiting orrestricting the application logic's access to configuration resources,physical interfaces, hard macros of the configurable logic platform, andvarious peripherals of the configurable logic platform. For example, thecompute services provider can manage the programming of the configurablelogic platform so that it includes both the host logic and theapplication logic. The host logic can provide a framework or sandbox forthe application logic to work within. In particular, the host logic cancommunicate with the application logic and constrain the functionalityof the application logic. For example, the host logic can performbridging functions between the local interconnect (e.g., the PCIeinterconnect) and the application logic so that the application logiccannot directly control the signaling on the local interconnect. Thehost logic can be responsible for forming packets or bus transactions onthe local interconnect and ensuring that the protocol requirements aremet. By controlling transactions on the local interconnect, the hostlogic can potentially prevent malformed transactions or transactions toout-of-bounds locations. As another example, the host logic can isolatea configuration access port so that the application logic cannot causethe configurable logic platform to be reprogrammed without usingservices provided by the compute services provider. As another example,the host logic can manage the burst size and bandwidth over the localinterconnect and to internal resources of the configurable logicplatform to potentially increase determinism and quality of service. Byapportioning bandwidth to the local interconnect and to the internalresources, each user can receive more deterministic performance and onecustomer cannot directly or indirectly determine if another customer issharing resources of the configurable logic platform.

FIG. 1 is a system diagram showing an example of a computing system 100including a configurable logic platform 110 and a server computer 120.For example, the server computer 120 can be used to execute applicationprograms for multiple end-users. Specifically, the server computer 120can include one or more central processing units (CPUs) 122, memory 124,and a peripheral interface 126. The CPU 122 can be used to executeinstructions stored in the memory 124. For example, each end-user can beexecuting a different virtual machine 128A-B that is loaded in thememory 124 and managed by a hypervisor or operating system kernel. Eachof the virtual machines 128A-B can be loaded with different applicationprograms and the CPU 122 can execute the instructions of the applicationprograms. Each application program can communicate with a hardwareaccelerator of the configurable logic platform 110 by issuingtransactions using the peripheral interface 126. As another example, oneof the virtual machines 128A-B (e.g., 128A) can be executing amanagement or control kernel in communication with one or more remoteserver computers (not shown), such as a control plane computer of acompute service that manages server computer 120. A remote servercomputer can be executing a virtual machine that communicates with thecontrol kernel executing on the virtual machine 128A so that the remotevirtual machine can communicate with the hardware accelerator of theconfigurable logic platform 110 via the control kernel executing on thevirtual machine 128A.

As used herein, a transaction is a communication between components. Asspecific examples, a transaction can be a read request, a write, a readresponse, a message, an interrupt, or other various exchanges ofinformation between components. The transaction can occur on a busshared by multiple components. Specifically, values of signal lines ofthe bus can be modulated to transfer information on the bus using acommunications protocol of the bus. The transaction can occur over oneor more phases, such as an address phase and one or more data phases.Additionally or alternatively, the transaction can occur using one ormore serial lines of a point-to-point interconnect that connects twocomponents. Specifically, the transaction can be sent in a packet thatis transmitted over the point-to-point interconnect.

The peripheral interface 126 can include a bridge for communicatingbetween the CPU 122 using a local or front-side interconnect andcomponents using a peripheral or expansion interconnect. Specifically,the peripheral interface 126 can be connected to a physical interconnectthat is used to connect the server computer 120 to the configurablelogic platform 110 and/or to other components. For example, the physicalinterconnect can be an expansion bus for connecting multiple componentstogether using a shared parallel bus or serial point-to-point links. Asa specific example, the physical interconnect can be PCI express, PCI,or another physical interconnect that tightly couples the servercomputer 120 to the configurable logic platform 110. Thus, the servercomputer 120 and the configurable logic platform 110 can communicateusing PCI bus transactions or PCIe packets, for example.

The configurable logic platform 110 can include multiple reconfigurablelogic regions 140A-B and host logic shown generally at 111. In oneembodiment, the configurable logic platform 110 can include one or moreintegrated circuits mounted to a printed circuit board that isconfigured to be inserted into an expansion slot of the physicalinterconnect. As one example, the one or more integrated circuits can bea single FPGA and the different reconfigurable logic regions 140A-B canbe different regions or areas of the FPGA. As another example, the oneor more integrated circuits can be multiple FPGAs, and the differentreconfigurable logic regions 140A-B can correspond to differentrespective FPGAs or groups of FPGAs. As a specific example, theconfigurable logic platform 110 can include eight FPGAs, and aparticular reconfigurable logic region 140A-B can correspond to a groupof one, two, or four FPGAs. As another example, the one or moreintegrated circuits can include an application-specific integratedcircuit (ASIC) having hardwired circuits and multiple differentreconfigurable logic regions 140A-B. In particular, all or a portion ofthe host logic can include hardwired circuits. In another embodiment,the configurable logic platform 110 can include one or more integratedcircuits mounted to a motherboard of the server computer 120. In anotherembodiment, the configurable logic platform 110 can be integrated on asystem on a chip (SOC) or multichip module that includes the CPU 122.

The host logic 111 can include a host interface 112, a managementfunction 114, and multiple data path functions 116A-B. Eachreconfigurable logic region 140A-B can include hardware that isconfigurable to implement a hardware accelerator or application logic.In other words, each reconfigurable logic region 140A-B can includelogic that is programmable to perform a given function. For example, thereconfigurable logic regions 140A-B can include programmable logicblocks comprising combinational logic and/or look-up tables (LUTs) andsequential logic elements (such as flip-flops and/or latches),programmable routing and clocking resources, programmable distributedand block random access memories (RAMs), digital signal processing (DSP)bitslices, and programmable input/output pins. It should be noted thatfor ease of illustration, the alphabetic suffix is generally omitted inthe following description unless the suffix can provide additionalclarity (e.g., reconfigurable logic region 140A can be referred to asreconfigurable logic region 140, and so forth). It should also be notedthat while two reconfigurable logic regions 140 are illustrated in FIG.1, a different amount of reconfigurable logic regions 140 are possible(such as four, eight, or ten, for example).

The host logic can be used to encapsulate the reconfigurable logicregion 140. For example, the reconfigurable logic region 140 caninterface with various components of the configurable hardware platformusing predefined interfaces so that the reconfigurable logic region 140is restricted in the functionality that it can perform. As one example,the reconfigurable logic region can interface with static host logicthat is loaded prior to the reconfigurable logic region 140 beingconfigured. For example, the static host logic can include logic thatisolates different components of the configurable logic platform 110from the reconfigurable logic region 140. As one example, hard macros ofthe configurable logic platform 110 (such as a configuration access portor circuits for signaling on the physical interconnect) can be maskedoff so that the reconfigurable logic region 140 cannot directly accessthe hard macros. Additionally, the reconfigurable logic regions 140A-Bcan be masked off from each other. Thus, the reconfigurable logic region140A cannot interface with the reconfigurable logic region 140B and viceversa.

The host logic can include the host interface 112 for communicating withthe server computer 120. Specifically, the host interface 112 can beused to connect to the physical interconnect and to communicate with theserver computer 120 using a communication protocol of the physicalinterconnect. As one example, the server computer 120 can communicatewith the configurable logic platform 110 using a transaction includingan address associated with the configurable logic platform 110.Similarly, the configurable logic platform 110 can communicate with theserver computer 120 using a transaction including an address associatedwith the server computer 120. The addresses associated with the variousdevices connected to the physical interconnect can be predefined by asystem architect and programmed into software residing on the devices.Additionally or alternatively, the communication protocol can include anenumeration sequence where the devices connected to the physicalinterconnect are queried and where addresses are assigned to each ofdevices as part of the enumeration sequence. As one example, theperipheral interface 126 can issue queries to each of the devicesconnected to the physical interconnect. The host interface 112 canrespond to the queries by providing information about the configurablelogic platform 110, such as how many functions are present on theconfigurable logic platform 110, and a size of an address rangeassociated with each of the functions of the configurable logic platform110. Based on this information, addresses of the computing system 100can be allocated such that each function of each device connected to thephysical interconnect is assigned a non-overlapping range of addresses.After enumeration, the host interface 112 can route transactions tofunctions of the configurable logic platform 110 based on an address ofthe transaction.

The host logic can include the management function 114 that can be usedfor managing and configuring the configurable logic platform 110.Commands and data can be sent from the server computer 120 to themanagement function 114 using transactions that target the address rangeof the management function 114. For example, the server computer 120 cangenerate transactions to transfer data (e.g., configuration data) and/orwrite control registers of the configurable logic platform 110 that aremapped to one or more addresses within the address range of themanagement function 114. Writing the control registers can cause theconfigurable logic platform 110 to perform operations, such asconfiguring and managing the configurable logic platform 110. As aspecific example, configuration data corresponding to application logicto be implemented in the reconfigurable logic region 140 can betransmitted from the server computer 120 to the configurable logicplatform 110 in one or more transactions over the physical interconnect.A transaction 150 to configure the reconfigurable logic region 140 withthe configuration data can be transmitted from the server computer 120to the configurable logic platform 110. Specifically, the transaction150 can write a value to a control register mapped to the managementfunction 114 address space that begins configuring the reconfigurablelogic region 140. Different values and/or different control registerscan be used to select between configuring the reconfigurable logicregion 140A or the reconfigurable logic region 140B. In one embodiment,the configuration data can be transferred from the server computer 120to the configurable logic platform 110 before the configuration of thereconfigurable logic region 140 begins. For example, the managementfunction 114 can cause the configuration data to be stored in an on-chipor off-chip memory accessible by the configurable logic platform 110,and the configuration data can be read from the memory when thereconfigurable logic region 140 is being configured. In anotherembodiment, the configuration data can be transferred from the servercomputer 120 to the configurable logic platform 110 after theconfiguration of the reconfigurable logic region 140 begins. Forexample, a control register can be written to begin configuration of thereconfigurable logic region 140 and the configuration data can bestreamed into or loaded onto the reconfigurable logic region 140 astransactions including the configuration data are processed by themanagement function 114.

The host logic can include a data path function 116 that can be used toexchange information (e.g., application input/output 160) between theserver computer 120 and the configurable logic platform 110.Specifically, the data path function 116A can be used to exchangeinformation between the server computer 120 and the reconfigurable logicregion 140A and the data path function 116B can be used to exchangeinformation between the server computer 120 and the reconfigurable logicregion 140B. Commands and data can be sent from the server computer 120to the data path function 116 using transactions that target the addressrange of the data path function 116. Specifically, the data pathfunction 116A can be assigned a first range of addresses, and the datapath function 116B can be assigned a second, different range ofaddresses. The configurable logic platform 110 can communicate with theserver computer 120 using a transaction including an address associatedwith the server computer 120.

The data path function 116 can act as a translation layer between thehost interface 112 and the reconfigurable logic region 140.Specifically, the data path function 116 can include an interface forreceiving information from the reconfigurable logic region 140 and thedata path function 116 can format the information for transmission fromthe host interface 112. Formatting the information can includegenerating control information for one or more transactions andpartitioning data into blocks that are sized to meet protocolspecifications. Thus, the data path function 116 can be interposedbetween the reconfigurable logic region 140 and the physicalinterconnect. In this manner, the reconfigurable logic region 140 canpotentially be blocked from formatting transactions and directlycontrolling the signals used to drive the physical interconnect so thatthe reconfigurable logic region 140 cannot be used to inadvertently ormaliciously violate protocols of the physical interconnect.

The host interface 112 can be interposed as a layer between the datapath functions 116A-B and the physical interconnect. The host interface112 can enforce bandwidth, latency, size, and other quality of servicefactors for transactions over the physical interconnect. For example,the host interface 112 can apportion the outgoing bandwidth fortransactions originating from the data path functions 116A-B and themanagement function 114. As one example, the outgoing bandwidthallocated for each of the data path functions 116A-B can be specified ashalf of the usable bandwidth of the physical interconnect. Transactionsoriginating from the management function 114 can be infrequent but highpriority. Thus, the management function 114 can be given the highestpriority for sending transactions over the physical interconnect.Alternatively, the management function 114 can be assigned a fixedamount of bandwidth to be taken from the budget of the bandwidthassigned to the data path functions 116A-B. The percentage of bandwidthassigned to each function can be fixed or programmable. For example, acontrol register or registers mapped to the management function 114address space can be used to program the apportionment of the bandwidthassigned to each function. The host interface 112 can also control amaximum size transaction for transactions originating from the data pathfunctions 116A-B and the management function 114. The physicalinterconnect may be more efficiently utilized when the maximum sizetransaction is increased since more data can potentially be transferredfor a given amount of overhead or control information of the transaction(such as a packet header). However, a larger transaction size mayincrease latency for subsequent transactions since the latertransactions cannot begin until the earlier transactions are complete.Thus, but controlling a transaction size over the physical interconnect,the latency of the transactions and/or the effective bandwidthutilization can be affected. The maximum size of transactions can be afixed parameter of the host logic or can be programmed using a controlregister or registers mapped to the management function 114 addressspace.

In sum, applications of multiple customers running on the servercomputer 120 can be accelerated using the reconfigurable hardware of theconfigurable logic platform 110. As one example, the server computer 120can host multiple virtual machines 128A-B, where each virtual machine isoperated by a different user. The virtual machines 128A-B can runapplications that can be accelerated by application logic that is loadedonto the configurable logic platform 110. Specifically, the virtualmachine 128A can execute an application that can be accelerated byapplication logic loaded onto the reconfigurable logic region 140A. Theapplication can communicate with the reconfigurable logic region 140Ausing transactions addressed to the data path function 116A. Responsesfrom the reconfigurable logic region 140A can be returned to theapplication executing on the virtual machine 128A using transactionsoriginating from the data path function 116A. The bandwidthcorresponding to the transactions from the data path function 116A canbe apportioned among the bandwidth corresponding to the transactionsfrom the other functions, such as the data path function 116B. Bycontrolling the bandwidth and/or the size of the transactions, theresponse of the accelerators can potentially be more deterministic andit can be more difficult for one user to determine that another user isusing an accelerator of the configurable logic platform 110.

Additionally, the different virtual machines 128A-B and the applicationlogic designs can be isolated from each other to provide the differentcustomers with a secure and private computing environment while sharingportions of the computing infrastructure. For example, the host logic111 and/or a hypervisor executing on the server computer 120 canrestrict access to the different virtual machines 128A-B and theapplication logic designs so that the customers are isolated from eachother. Specifically, the host logic 111 and/or the hypervisor canprevent a virtual machine (e.g., 128A) executed by one customer toaccess the application logic (e.g., 140B) of a different customer; thehost logic 111 and/or the hypervisor can prevent a virtual machine(e.g., 128A) executed by one customer to access a virtual machine (e.g.,128B) executed by a different customer; and the host logic 111 and/orthe hypervisor can prevent the application logic (e.g., 140A) of onecustomer from accessing a virtual machine (e.g., 128B) executed by adifferent customer. Additionally, the host logic 111 can prevent theapplication logic (e.g., 140A) of one customer from accessing theapplication logic (e.g., 140B) of a different customer. Thus, the system100 can potentially provide a secure environment for the virtualmachines 128A-B and the application logic designs programmed onto thereconfigurable logic regions 140A-B.

FIG. 2 is a system diagram showing an example of a system 200 includinga configurable hardware platform 210 and a server computer 220. Theserver computer 220 and the configurable hardware platform 210 can beconnected via a physical interconnect 230. For example, the physicalinterconnect 230 can be PCI express, PCI, or any other interconnect thattightly couples the server computer 220 to the configurable hardwareplatform 210. The server computer 220 can include a CPU 222, memory 224,and an interconnect interface 226. For example, the interconnectinterface 226 can provide bridging capability so that the servercomputer 220 can access devices that are external to the server computer220. For example, the interconnect interface 226 can include a hostfunction, such as root complex functionality as used in PCI express.

The configurable hardware platform 210 can include reconfigurable logicblocks and other hardware. The reconfigurable logic blocks can beconfigured or programmed to perform various functions of theconfigurable hardware platform 210. The reconfigurable logic blocks canbe programmed multiple times with different configurations so that theblocks can perform different functions over the lifetime of the device.The functions of the configurable hardware platform 210 can becategorized based upon the purpose or capabilities of each function, orbased upon when the function is loaded into the configurable hardwareplatform 210. For example, the configurable hardware platform 210 caninclude static logic, reconfigurable logic, and hard macros. Thefunctionality for the static logic, reconfigurable logic, and hardmacros can be configured at different times. Thus, the functionality ofthe configurable hardware platform 210 can be loaded incrementally.

A hard macro can perform a predefined function and can be available whenthe configurable hardware platform 210 is powered on. For example, ahard macro can include hardwired circuits that perform a specificfunction. As specific examples, the hard macros can include aconfiguration port 211 for configuring the configurable hardwareplatform 210, a serializer-deserializer transceiver (SERDES) 212 forcommunicating serial data, a memory or dynamic random access memory(DRAM) controller 213 for signaling and controlling off-chip memory(such as a double data rate (DDR) DRAM 281), and a storage controller214 for signaling and controlling a storage device 282.

The static logic can be loaded at boot time onto reconfigurable logicblocks. For example, configuration data specifying the functionality ofthe static logic can be loaded from an on-chip or off-chip flash memorydevice during a boot-up sequence. The boot-up sequence can includedetecting a power event (such as by detecting that a supply voltage hastransitioned from below a threshold value to above the threshold value)and deasserting a reset signal in response to the power event. Aninitialization sequence can be triggered in response to the power eventor the reset being deasserted. The initialization sequence can includereading configuration data stored on the flash device and loading theconfiguration data onto the configurable hardware platform 210 using theconfiguration port 211 so that at least a portion of the reconfigurablelogic blocks are programmed with the functionality of the static logic.After the static logic is loaded, the configurable hardware platform 210can transition from a loading state to an operational state thatincludes the functionality of the static logic.

The reconfigurable logic can be loaded onto reconfigurable logic blockswhile the configurable hardware platform 210 is operational (e.g., afterthe static logic has been loaded). The configuration data correspondingto the reconfigurable logic can be stored in an on-chip or off-chipmemory and/or the configuration data can be received or streamed from aninterface (e.g., the interconnect interface 256) of the configurablehardware platform 210. The reconfigurable logic can be divided intonon-overlapping regions, which can interface with static logic. Forexample, the reconfigurable regions can be arranged in an array or otherregular or semi-regular structure. For example, the array structure mayinclude holes or blockages where hard macros are placed within the arraystructure. The different reconfigurable regions are capable ofcommunicating with each other, the static logic, and the hard macros byusing programmable signal lines that can be specified as static logic.The different reconfigurable regions can be configured at differentpoints in time so that a first reconfigurable region can be configuredat a first point in time and a second reconfigurable region can beconfigured at a second point in time.

The functions of the configurable hardware platform 210 can be dividedor categorized based upon the purpose or capabilities of the functions.For example, the functions can be categorized as control planefunctions, data plane functions, and shared functions. A control planecan be used for management and configuration of the configurablehardware platform 210. The data plane can be used to manage datatransfer between accelerator logic loaded onto the configurable hardwareplatform 210 and the server computer 220. Shared functions can be usedby both the control plane and the data plane. The control planefunctionality can be loaded onto the configurable hardware platform 210prior to loading the data plane functionality. The control plane caninclude host logic of the configurable hardware platform 210. The dataplane can include multiple areas of encapsulated reconfigurable logicconfigured with application logic 240A-B. It should be noted that whilethe different areas of encapsulated reconfigurable logic 240A-B areshown as overlapping in the illustration of FIG. 2, the physicallocation of the different areas 240A-B are generally placed innon-overlapping regions of one or more integrated circuits. Also, whileonly two different areas of encapsulated reconfigurable logic 240A-B areshown, more areas are possible.

Generally, the control plane and the different regions of the data planecan be accessed using different functions of the configurable hardwareplatform 210, where the different functions are assigned to differentaddress ranges. Specifically, the control plane functions can beaccessed using a management function 252 and the data plane functionscan be accessed using data path functions or application functions254A-B. An address mapping layer 250 can differentiate transactionsbound for the control plane or the different functions of the dataplane. In particular, transactions from the server computer 220 boundfor the configurable hardware platform 210 can be identified using anaddress within the transaction. Specifically, if the address of thetransaction falls within the range of addresses assigned to theconfigurable hardware platform 210, the transaction is destined for theconfigurable hardware platform 210. The range of addresses assigned tothe configurable hardware platform 210 can span the range of addressesassigned to each of the different functions. The transaction can be sentover the physical interconnect 230 and received at the interconnectinterface 256. The interconnect interface 256 can be an endpoint of thephysical interconnect 230. It should be understood that the physicalinterconnect 230 can include additional devices (e.g., switches andbridges) arranged in a fabric for connecting devices or components tothe server computer 220.

The address mapping layer 250 can analyze the address of the transactionand determine where to route the transaction within the configurablehardware platform 210 based on the address. For example, the managementfunction 252 can be assigned a first range of addresses and differentfunctions of the management plane can be accessed by using differentaddresses within that range. Transactions with addresses falling withinthe range assigned to the management function 252 can be routed throughthe host logic private fabric 260 to the different blocks of the controlplane. For example, transactions can be addressed to a management andconfiguration block 262. Similarly, the application function 254A can beassigned a second range of addresses, the application function 254B canbe assigned a third range of addresses, and different functions of thedata plane can be accessed by using different addresses within thoseranges.

The management and configuration block 262 can include functions relatedto managing and configuring the configurable hardware platform 210. Forexample, the management and configuration block 262 can provide accessto the configuration port 211 so that the reconfigurable logic blockscan be configured. For example, the server computer 220 can send atransaction to the management and configuration block 262 to initiateloading of the application logic within the encapsulated reconfigurablelogic 240A or 240B. The configuration data corresponding to theapplication logic can be sent from the server computer 220 to themanagement function 252. The management function 252 can route theconfiguration data corresponding to the application logic through thehost logic fabric 260 to the configuration port 211 so that theapplication logic can be loaded.

As another example, the management and configuration block 262 can storemetadata about the configurable hardware platform 210. For example,versions of the different logic blocks, update histories, and otherinformation can be stored in memory of the management and configurationblock 262. The server computer 220 can read the memory to retrieve someor all of the metadata. Specifically, the server computer 220 can send aread request targeting the memory of the management and configurationblock 262 and the management and configuration block 262 can generateread response data to return to the server computer 220.

The management function 252 can also be used to access privateperipherals of the configurable hardware platform 210. The privateperipherals are components that are only accessible from the controlplane. For example, the private peripherals can include a JTAG (e.g.,IEEE 1149.1) controller 270, light emitting displays (LEDs) 271, amicrocontroller 272, a universal asynchronous receiver/transmitter(UART) 273, a memory 274 (e.g., a serial peripheral interface (SPI)flash memory), and any other components that are accessible from thecontrol plane and not the data plane. The management function 252 canaccess the private peripherals by routing commands through the hostlogic private fabric 260 and the private peripheral interface(s) 275.The private peripheral interface(s) 275 can directly communicate withthe private peripherals.

Public peripherals are shared functions that are accessible from eitherthe control plane or the data plane. For example, the public peripheralscan be accessed from the control plane by addressing transactions withinthe address range assigned to the management function 252. The publicperipherals can be accessed from the data plane by addressingtransactions within the address range assigned to the applicationfunction 254. Thus, the public peripherals are components that can havemultiple address mappings and can be used by both the control plane andthe data plane. Examples of the public peripherals are otherconfigurable hardware platform(s) (CHP(s)) 280, DRAM 281 (e.g., DDRDRAM), storage devices 282 (e.g., hard disk drives and solid-statedrives), and other various components that can be used to generate,store, or process information. The public peripherals can be accessedvia the public peripheral interfaces 285. Thus, the public peripheralinterfaces 285 can be an intermediary layer interposed between thepublic peripherals and the other functions of the configurable hardwareplatform 210. Specifically, the public peripheral interfaces 285 cantranslate requests from the control plane or the data plane and formatcommunications to the public peripherals into a native protocol of thepublic peripherals.

Additionally, the public peripheral interfaces 285 can be used tocontrol access to and/or isolate all or portions of the publicperipherals. As one example, the access logic 286 can enforce bandwidth,latency, size, and other quality of service factors for transactions toand from the public peripherals. For example, the access logic 286 canarbitrate between requests from the different functions targeted to thepublic peripherals. The access logic 286 can enforce a fair distributionof access so that requests originating at one reconfigurable logic areacannot starve out requests originating at another reconfigurable logicarea or the from the management function 252. As a specific example, theaccess logic 286 can enforce a round-robin distribution of access foreach of the components accessing the public peripherals. In oneembodiment, the access logic 286 can give the management function 252highest priority to the peripherals. Additionally, the access logic 286can enforce a size limitation on transfers between the publicperipherals and the different components. By enforcing the sizelimitation, the latency to access a public peripheral can potentially bemore deterministic. Additionally, the access logic 286 can enforce abandwidth apportionment of the public peripherals. For example, some ofthe components may transfer small amounts of data (e.g., a byte or aword) to and from the peripherals and other components may transferlarger amounts of data (e.g., sixteen or thirty-two words) to and fromthe peripherals in a given request. A pure round-robin approach maypenalize the component using smaller transfer sizes, so abandwidth-aware scheduling algorithm can potentially apportion thebandwidth more accurately. The access logic 286 can evenly apportion theavailable bandwidth to the peripherals or the bandwidth apportionmentcan be programmable. For example, a control register or registers mappedto the management function 114 address space can be used to program theapportionment of the bandwidth assigned to each component accessing theperipherals. As one specific example, the access logic 286 can beprogrammed to apportion the bandwidth so that the reconfigurable logicregion 240A receives 75% of the bandwidth and the reconfigurable logicregion 240B receives 25% of the bandwidth.

The access logic 286 can also enforce a mapping of the peripheraladdress space to different components of the configurable hardwareplatform 210. For example, the address space of the peripherals can bededicated to a single component or shared among the components. As aspecific example, the address space of the DRAM 281 can be divided intotwo separate non-overlapping address spaces where the reconfigurablelogic region 240A can be assigned to a first range of addresses and thereconfigurable logic region 240B can be assigned to a second range ofaddresses. Thus, the DRAM storage locations assigned to the differentreconfigurable logic regions can be isolated from each other to maintainprivacy of the users. As another specific example, the address space ofthe DRAM 281 can be divided into two separate non-overlapping addressspaces dedicated to each of the reconfigurable logic regions 240A-B andan additional address space that can be shared by the reconfigurablelogic regions 240A-B. Thus, there can be private areas of the DRAM 281and shared areas of the DRAM 281. By allowing shared memory space of thepublic peripherals, one accelerator can potentially share data withanother accelerator faster than compared to transferring all databetween accelerators over the physical interconnect 230. The mapping ofthe peripheral address space can be fixed by the host logic or can beprogrammed using a control register or registers mapped to themanagement function 114 address space.

Mailboxes 290 and watchdog timers 292 are shared functions that areaccessible from either the control plane or the data plane.Specifically, the mailboxes 290 can be used to pass messages and otherinformation between the control plane and the data plane. In oneembodiment, the mailboxes 290 can be used to pass messages and otherinformation between the different application functions 254A-B of thedata plane. The mailboxes 290 can include buffers, control registers(such as semaphores), and status registers. By using the mailboxes 290as an intermediary between the different functions of the data plane andthe control plane, isolation between the different functions of the dataplane and the control plane can potentially be increased which canincrease the security of the configurable hardware platform 210.

The watchdog timers 292 can be used to detect and recover from hardwareand/or software malfunctions. For example, a watchdog timer 292 canmonitor an amount of time taken to perform a particular task, and if theamount of time exceeds a threshold, the watchdog timer 292 can initiatean event, such as writing a value to a control register or causing aninterrupt or reset to be asserted. As one example, the watchdog timer292 can be initialized with a first value when beginning a first task.The watchdog timer 292 can automatically count down after it isinitialized and if the watchdog timer 292 reaches a zero value, an eventcan be generated. Alternatively, if the first task finishes before thewatchdog timer 292 reaches a zero value, the watchdog timer 292 can bereinitialized with a second value when beginning a second task. Thefirst and second values can be selected based on a complexity or anamount of work to complete in the first and second tasks, respectively.

The application functions 254A-B can be used to access the data planefunctions, such as the application logic 240A-B. As one example, theapplication function 254A can be used to access the application logic240A and the application function 254B can be used to access theapplication logic 240B. For example, a transaction directed to one ofthe application logic designs 240A-B can cause data to be loaded,processed, and/or returned to the server computer 220. Specifically, thedata plane functions can be accessed using transactions having anaddress within the range assigned to one of the application functions254A-B. For example, a transaction can be sent from the server computer220 to the application logic 240A via the application function 254A.Specifically, transactions addressed to the application function 254Acan be routed through the peripheral fabric 264 to the application logic240A. Responses from the application logic 240A can be routed throughthe peripheral fabric 264 to the application function 254A, through theinterconnect interface 256, and then back to the server computer 220.Additionally, the data and transactions generated by the applicationlogic 240A-B can be monitored using a usage and transaction monitoringlayer 266. The monitoring layer 266 can potentially identifytransactions or data that violate predefined rules and can generate analert to be sent over the control plane. Additionally or alternatively,the monitoring layer 266 can terminate any transactions generated by theapplication logic 240A-B that violate any criteria of the monitoringlayer 266. Additionally, the monitoring layer 266 can analyzeinformation moving to or from the application logic 240A-B so thatstatistics about the information can be collected and accessed from thecontrol plane.

The interconnect interface 256 can include arbitration logic 257 forapportioning bandwidth of the application functions 254A-B across thephysical interconnect 230. Specifically, the arbitration logic 257 canselect which transactions from a queue or list of transactionsoriginating from the application functions 254A-B are to be sent. As oneexample, the arbitration logic 257 can select an order of thetransactions so that the bandwidth associated with each applicationfunction 254A-B matches a predefined or programmed division of theavailable bandwidth of the physical interconnect 230. Specifically, thearbitration logic 257 can track a history of the amount of datatransferred by each application function 254A-B over the physicalinterconnect 230, and the next transaction can be selected to maintain aspecified apportionment of the bandwidth among the different applicationfunctions 254A-B. As another example, the arbitration logic 257 canassign time-slots to each application function 254A-B, and transactionsfrom a given application function can only be sent during the time-slotfor the respective application function. Thus, transactions from theapplication function 254A can only be sent during the time-slot assignedto the application function 254A, transactions from the applicationfunction 254B can only be sent during the time-slot assigned to theapplication function 254B, and so forth.

Data can also be transferred between the server computer 220 and theapplication logic by programming a direct memory access (DMA) engine242. The DMA engine 242 can include control and status registers forprogramming or specifying DMA transfers from a source location to adestination location. As one example, the DMA engine 242 can beprogrammed to pull information stored within the memory 224 of servercomputer 220 into the application logic 240 or into the publicperipherals of the configurable hardware platform 210. As anotherexample, the DMA engine 242 can be programmed to push data that has beengenerated by the application logic 240 to the memory 224 of the servercomputer 220. The data generated by the application logic 240 can bestreamed from the application logic 240 or can be written to the publicperipherals, such as the memory 281 or storage 282.

The application logic 240A-B can communicate with other configurablehardware platforms 280. For example, the other configurable hardwareplatforms 280 can be connected by one or more serial lines that are incommunication with the SERDES 212. The application logic 240A-B cangenerate transactions to the different configurable hardware platforms280, and the transactions can be routed through the CHP fabric 244 tothe corresponding serial lines (via the SERDES 212) of the configurablehardware platforms 280. Similarly, the application logic 240A-B canreceive information from other configurable hardware platforms 280 usingthe reverse path. The CHP fabric 244 can be programmed to providedifferent access privileges to the application logic of differentreconfigurable regions 240A-B. In this manner, the application logic ofdifferent reconfigurable regions 240A-B can communicate with differentCHPs. As a specific example, the reconfigurable region 240A cancommunicate with a first set of CHPs and the reconfigurable region 240Bcan communicate with a second set of CHPs that is mutually exclusivewith the first set of CHPs. As another example, there can be shared CHPsand private CHPs for the different reconfigurable regions 240A-B. TheCHP fabric 244 can be used to apportion the bandwidth and/or transfersize for CHPs that are shared among the different reconfigurable regions240A-B.

In sum, the functions of the configurable hardware platform 210 can becategorized as control plane functions and data plane or applicationfunctions. The control plane functions can be used to monitor andrestrict the capabilities of the data plane. The data plane functionscan be used to accelerate a user's application that is running on theserver computer 220. By separating the functions of the control and dataplanes, the security and availability of the server computer 220 andother computing infrastructure can potentially be increased. Forexample, the application logic 240 cannot directly signal onto thephysical interconnect 230 because the intermediary layers of the controlplane control the formatting and signaling of transactions of thephysical interconnect 230. As another example, the application logic 240can be prevented from using the private peripherals which could be usedto reconfigure the configurable hardware platform 210 and/or to accessmanagement information that may be privileged. As another example, theapplication logic 240 can only access hard macros of the configurablehardware platform 210 through intermediary layers so that anyinteraction between the application logic 240 and the hard macros iscontrolled using the intermediary layers.

FIG. 3 is a system diagram showing an example of a system 300 includinga logic repository service 310 for managing configuration data that canbe used to configure configurable resources within a fleet of computeresources 320. A compute services provider can maintain the fleet ofcomputing resources 320 for users of the services to deploy when acomputing task is to be performed. The computing resources 320 caninclude server computers 340 having configurable logic resources 342that can be programmed as hardware accelerators. The compute servicesprovider can manage the computing resources 320 using software servicesto manage the configuration and operation of the configurable hardware342. As one example, the compute service provider can execute a logicrepository service 310 for ingesting application logic 332 specified bya user, generating configuration data 336 for configuring theconfigurable logic platform based on the logic design of the user, anddownloading the validated configuration data 362 in response to arequest 360 to configure an instance of the configurable logic platform.The download request 360 can be from the user that developed theapplication logic 332 or from a user that has acquired a license to usethe application logic 332. Thus, the application logic 332 can becreated by the compute services provider, a user, or a third-partyseparate from the user or the compute services provider. For example, amarketplace of accelerator intellectual property (IP) can be provided tothe users of the compute services provider, and the users canpotentially increase the speed of their applications by selecting anaccelerator from the marketplace.

The logic repository service 310 can be a network-accessible service,such as a web service. Web services are commonly used in cloudcomputing. A web service is a software function provided at a networkaddress over the web or the cloud. Clients initiate web service requeststo servers and servers process the requests and return appropriateresponses. The client web service requests are typically initiatedusing, for example, an API request. For purposes of simplicity, webservice requests are generally described below as API requests, but itis understood that other web service requests can be made. An APIrequest is a programmatic interface to a defined request-responsemessage system, typically expressed in JSON or XML, which is exposed viathe web—most commonly by means of an HTTP-based web server. Thus, incertain implementations, an API can be defined as a set of HypertextTransfer Protocol (HTTP) request messages, along with a definition ofthe structure of response messages, which can be in an Extensible MarkupLanguage (XML) or JavaScript Object Notation (JSON) format. The API canspecify a set of functions or routines that perform an action, whichincludes accomplishing a specific task or allowing interaction with asoftware component. When a web service receives the API request from aclient device, the web service can generate a response to the requestand send the response to the endpoint identified in the request.Additionally or alternatively, the web service can perform actions inresponse to the API request without generating a response to theendpoint identified in the request.

The logic repository service 310 can receive an API request 330 togenerate configuration data for a configurable hardware platform, suchas the configurable hardware 342 of the server computer 340. Forexample, the API request 330 can be originated by a developer or partneruser of the compute services provider. The request 330 can includefields for specifying data and/or metadata about the logic design, theconfigurable hardware platform, user information, access privileges,production status, and various additional fields for describinginformation about the inputs, outputs, and users of the logic repositoryservice 310. As specific examples, the request can include a descriptionof the design, a production status (such as trial or production), anencrypted status of the input or output of the service, a reference to alocation for storing an input file (such as the hardware design sourcecode), a type of the input file, an instance type of the configurablehardware, and a reference to a location for storing an output file orreport. In particular, the request can include a reference to a hardwaredesign specifying application logic 332 for implementation on theconfigurable hardware platform. Specifically, a specification of theapplication logic 332 and/or of the host logic 334 can be a collectionof files, such as source code written in a hardware description language(HDL), a netlist generated by a logic synthesis tool, and/or placed androuted logic gates generated by a place and route tool.

The compute resources 320 can include many different types of hardwareand software categorized by instance type. In particular, an instancetype specifies at least a portion of the hardware and software of aresource. For example, hardware resources can include servers withcentral processing units (CPUs) of varying performance levels (e.g.,different clock speeds, architectures, cache sizes, and so forth),servers with and without co-processors (such as graphics processingunits (GPUs) and configurable logic), servers with varying capacity andperformance of memory and/or local storage, and servers with differentnetworking performance levels. Example software resources can includedifferent operating systems, application programs, and drivers. Oneexample instance type can comprise the server computer 340 including acentral processing unit (CPU) 344 in communication with the configurablehardware 342. The configurable hardware 342 can include programmablelogic such as an FPGA, a programmable logic array (PLA), a programmablearray logic (PAL), a generic array logic (GAL), or a complexprogrammable logic device (CPLD), for example. As specific examples, an“F1.small” instance type can include a first type of server computerwith one capacity unit of FPGA resources, an “F1.medium” instance typecan include the first type of server computer with two capacity units ofFPGA resources, an “F1.large” instance type can include the first typeof server computer with eight capacity units of FPGA resources, and an“F2.large” instance type can include a second type of server computerwith eight capacity units of FPGA resources. The configurable hardware342 can include multiple regions of programmable logic, such as theregions 346 and 348.

The logic repository service 310 can generate configuration data 336 inresponse to receiving the API request 330. The generated configurationdata 336 can be based on the application logic 332 and the host logic334. Specifically, the generated configuration data 336 can includeinformation that can be used to program or configure the configurablehardware 342 so that it performs the functions specified by theapplication logic 332 and the host logic 334. As one example, thecompute services provider can generate the host logic 334 includinglogic for interfacing between the CPU 344 and the configurable hardware342. Specifically, the host logic 334 can include logic for masking orshielding the application logic 332 from communicating directly with theCPU 344 so that all CPU-application logic transactions pass through thehost logic 334. In this manner, the host logic 334 can potentiallyreduce security and availability risks that could be introduced by theapplication logic 332.

Generating the configuration data 336 can include performing checksand/or tests on the application logic 332, integrating the applicationlogic 332 into a host logic 334 wrapper, synthesizing the applicationlogic 332, and/or placing and routing the application logic 332.Checking the application logic 332 can include verifying the applicationlogic 332 complies with one or more criteria of the compute servicesprovider. For example, the application logic 332 can be analyzed todetermine whether interface signals and/or logic functions are presentfor interfacing to the host logic 334. In particular, the analysis caninclude analyzing source code and/or running the application logic 332against a suite of verification tests. The verification tests can beused to confirm that the application logic is compatible with the hostlogic. As another example, the application logic 332 can be analyzed todetermine whether the application logic 332 fits within a designatedregion (e.g., region 346 or 348) of the specified instance type. Asanother example, the application logic 332 can be analyzed to determinewhether the application logic 332 includes any prohibited logicfunctions, such as ring oscillators or other potentially harmfulcircuits. As another example, the application logic 332 can be analyzedto determine whether the application logic 332 has any naming conflictswith the host logic 334 or any extraneous outputs that do not interfacewith the host logic 334. As another example, the application logic 332can be analyzed to determine whether the application logic 332 attemptsto interface to restricted inputs, outputs, or hard macros of theconfigurable hardware 342. If the application logic 332 passes thechecks of the logic repository service 310, then the configuration data336 can be generated. If any of the checks or tests fail, the generationof the configuration data 336 can be aborted.

Generating the configuration data 336 can include compiling and/ortranslating source code of the application logic 332 and the host logic334 into data that can be used to program or configure the configurablehardware 342. For example, the logic repository service 310 canintegrate the application logic 332 into a host logic 334 wrapper.Specifically, the application logic 332 can be instantiated into one ormore system designs that include the application logic 332 and the hostlogic 334. For example, a first system design can instantiate theapplication logic 332 in a host logic wrapper corresponding to theregion 346 and a second system design can instantiate the applicationlogic 332 in a host logic wrapper corresponding to the region 348. Eachof the integrated system designs can synthesized, using a logicsynthesis program, to create one or more netlists for the systemdesigns. Each netlist can be placed and routed, using a place and routeprogram, for the instance type specified for the system design. Eachplaced and routed design can be converted to configuration data 336which can be used to program the configurable hardware 342. For example,the configuration data 336 can be directly output from the place androute program. Thus, the generated configuration data can include datathat can be used to program the configurable hardware 342 withapplication logic 332 that is placed in one or more regions, such as theregions 346 and 348.

As one example, the generated configuration data 336 can include acomplete or partial bitstream for configuring all or a portion of theconfigurable logic of an FPGA. An FPGA can include configurable logicand non-configurable logic. The configurable logic can includeprogrammable logic blocks comprising combinational logic and/or look-uptables (LUTs) and sequential logic elements (such as flip-flops and/orlatches), programmable routing and clocking resources, programmabledistributed and block random access memories (RAMs), digital signalprocessing (DSP) bitslices, and programmable input/output pins. Thebitstream can be loaded into on-chip memories of the configurable logicusing configuration logic (e.g., a configuration access port). Thevalues loaded within the on-chip memories can be used to control theconfigurable logic so that the configurable logic performs the logicfunctions that are specified by the bitstream. Additionally, theconfigurable logic can be divided into different regions (such as theregions 346 and 348) which can be configured independently of oneanother. As one example, a full bitstream can be used to configure theconfigurable logic across all of the regions and a partial bitstream canbe used to configure only a portion of the configurable logic regions.As specific examples, a first partial bitstream can be used to configurethe region 346 with the application logic 332, a second partialbitstream can be used to configure the region 348 with the applicationlogic 332, and a third partial bitstream can be used to configure one ormore regions outside of the regions 346 and 348 with the host logic 334.The non-configurable logic can include hard macros that perform aspecific function within the FPGA, such as input/output blocks (e.g.,serializer and deserializer (SERDES) blocks and gigabit transceivers),analog-to-digital converters, memory control blocks, test access ports,and configuration logic for loading the configuration data onto theconfigurable logic.

The logic repository service 310 can store the generated configurationdata 336 in a logic repository database 350. The logic repositorydatabase 350 can be stored on removable or non-removable media,including magnetic disks, direct-attached storage, network-attachedstorage (NAS), storage area networks (SAN), redundant arrays ofindependent disks (RAID), magnetic tapes or cassettes, CD-ROMs, DVDs, orany other medium which can be used to store information in anon-transitory way and which can be accessed by the logic repositoryservice 310. Additionally, the logic repository service 310 can be usedto store input files (such as the specifications for the applicationlogic 332 and the host logic 334) and metadata about the logic designsand/or the users of the logic repository service 310. The generatedconfiguration data 336 can be indexed by one or more properties such asa user identifier, an instance type or types, a region of an instancetype, a marketplace identifier, a machine image identifier, and aconfigurable hardware identifier, for example.

The logic repository service 310 can receive an API request 360 todownload configuration data. For example, the request 360 can begenerated when a user of the compute resources 320 launches or deploys anew instance (e.g., an F1 instance) within the compute resources 320. Asanother example, the request 360 can be generated in response to arequest from an application executing on an operating instance. Therequest 360 can include a reference to the source and/or destinationinstance, a reference to the configuration data to download (e.g., aninstance type, a region of an instance type, a marketplace identifier, amachine image identifier, or a configurable hardware identifier), a useridentifier, an authorization token, and/or other information foridentifying the configuration data to download and/or authorizing accessto the configuration data. If the user requesting the configuration datais authorized to access the configuration data, the configuration datacan be retrieved from the logic repository database 350, and validatedconfiguration data 362 (e.g. a full or partial bitstream) correspondingto one or more configurable regions can be downloaded to the requestinginstance (e.g., server computer 340). The validated configuration data362 can be used to configure one or more regions of the configurablelogic of the destination instance. For example, the validatedconfiguration data 362 can be used to configure only the region 346 oronly the region 348 of the configurable hardware 342.

The logic repository service 310 can verify that the validatedconfiguration data 362 can be downloaded to the requesting instance.Validation can occur at multiple different points by the logicrepository service 310. For example, validation can include verifyingthat the application logic 332 is compatible with the host logic 334. Inparticular, a regression suite of tests can be executed on a simulatorto verify that the host logic 334 performs as expected after theapplication logic 332 is added to the design. Additionally oralternatively, it can be verified that the application logic 332 isspecified to reside only in reconfigurable regions that are separatefrom reconfigurable regions of the host logic 334. As another example,validation can include verifying that the validated configuration data362 is compatible with the instance type to download to. As anotherexample, validation can include verifying that the requestor isauthorized to access the validated configuration data 362. If any of thevalidation checks fail, the logic repository service 310 can deny therequest to download the validated configuration data 362. Thus, thelogic repository service 310 can potentially safeguard the security andthe availability of the computing resources 320 while enabling a user tocustomize hardware of the computing resources 320.

FIG. 4 is a computing system diagram of a network-based compute serviceprovider 400 that illustrates one environment in which embodimentsdescribed herein can be used. By way of background, the compute serviceprovider 400 (i.e., the cloud provider) is capable of delivery ofcomputing and storage capacity as a service to a community of endrecipients. In an example embodiment, the compute service provider canbe established for an organization by or on behalf of the organization.That is, the compute service provider 400 may offer a “private cloudenvironment.” In another embodiment, the compute service provider 400supports a multi-tenant environment, wherein a plurality of customersoperate independently (i.e., a public cloud environment). Generallyspeaking, the compute service provider 400 can provide the followingmodels: Infrastructure as a Service (“IaaS”), Platform as a Service(“PaaS”), and/or Software as a Service (“SaaS”). Other models can beprovided. For the IaaS model, the compute service provider 400 can offercomputers as physical or virtual machines and other resources. Thevirtual machines can be run as guests by a hypervisor, as describedfurther below. The PaaS model delivers a computing platform that caninclude an operating system, programming language execution environment,database, and web server. Application developers can develop and runtheir software solutions on the compute service provider platformwithout the cost of buying and managing the underlying hardware andsoftware. Additionally, application developers can develop and run theirhardware solutions on configurable hardware of the compute serviceprovider platform. The SaaS model allows installation and operation ofapplication software in the compute service provider. In someembodiments, end users access the compute service provider 400 usingnetworked client devices, such as desktop computers, laptops, tablets,smartphones, etc. running web browsers or other lightweight clientapplications. Those skilled in the art will recognize that the computeservice provider 400 can be described as a “cloud” environment.

The particular illustrated compute service provider 400 includes aplurality of server computers 402A-402C. While only three servercomputers are shown, any number can be used, and large centers caninclude thousands of server computers. The server computers 402A-402Ccan provide computing resources for executing software instances406A-406C. In one embodiment, the software instances 406A-406C arevirtual machines. As known in the art, a virtual machine is an instanceof a software implementation of a machine (i.e. a computer) thatexecutes applications like a physical machine. In the example of avirtual machine, each of the servers 402A-402C can be configured toexecute a hypervisor 408 or another type of program configured to enablethe execution of multiple software instances 406 on a single server.Additionally, each of the software instances 406 can be configured toexecute one or more applications.

It should be appreciated that although the embodiments disclosed hereinare described primarily in the context of virtual machines, other typesof instances can be utilized with the concepts and technologiesdisclosed herein. For instance, the technologies disclosed herein can beutilized with storage resources, data communications resources, and withother types of computing resources. The embodiments disclosed hereinmight also execute all or a portion of an application directly on acomputer system without utilizing virtual machine instances.

The server computers 402A-402C can include a heterogeneous collection ofdifferent hardware resources or instance types. Some of the hardwareinstance types can include configurable hardware that is at leastpartially configurable by a user of the compute service provider 400.One example of an instance type can include the server computer 402Awhich is in communication with configurable hardware 404A. Specifically,the server computer 402A and the configurable hardware 404A cancommunicate over a local interconnect such as PCIe. Another example ofan instance type can include the server computer 402B and configurablehardware 404B. For example, the configurable logic 404B can beintegrated within a multi-chip module or on the same die as a CPU of theserver computer 402B. Yet another example of an instance type caninclude the server computer 402C without any configurable hardware.Thus, hardware instance types with and without configurable logic can bepresent within the resources of the compute service provider 400.

One or more server computers 420 can be reserved for executing softwarecomponents for managing the operation of the server computers 402 andthe software instances 406. For example, the server computer 420 canexecute a management component 422. A customer can access the managementcomponent 422 to configure various aspects of the operation of thesoftware instances 406 purchased by the customer. For example, thecustomer can purchase, rent or lease instances and make changes to theconfiguration of the software instances. The configuration informationfor each of the software instances can be stored as a machine image (MI)442 on the network-attached storage 440. Specifically, the MI 442describes the information used to launch a VM instance. The MI caninclude a template for a root volume of the instance (e.g., an OS andapplications), launch permissions for controlling which customeraccounts can use the MI, and a block device mapping which specifiesvolumes to attach to the instance when the instance is launched. The MIcan also include a reference to a configurable hardware image (CHI) 442which is to be loaded on configurable hardware 404 when the instance islaunched. The CHI includes configuration data for programming orconfiguring at least a portion of the configurable hardware 404.

The customer can also specify settings regarding how the purchasedinstances are to be scaled in response to demand. The managementcomponent can further include a policy document to implement customerpolicies. An auto scaling component 424 can scale the instances 406based upon rules defined by the customer. In one embodiment, the autoscaling component 424 allows a customer to specify scale-up rules foruse in determining when new instances should be instantiated andscale-down rules for use in determining when existing instances shouldbe terminated. The auto scaling component 424 can consist of a number ofsubcomponents executing on different server computers 402 or othercomputing devices. The auto scaling component 424 can monitor availablecomputing resources over an internal management network and modifyresources available based on need.

A deployment component 426 can be used to assist customers in thedeployment of new instances 406 of computing resources. The deploymentcomponent can have access to account information associated with theinstances, such as who is the owner of the account, credit cardinformation, country of the owner, etc. The deployment component 426 canreceive a configuration from a customer that includes data describinghow new instances 406 should be configured. For example, theconfiguration can specify one or more applications to be installed innew instances 406, provide scripts and/or other types of code to beexecuted for configuring new instances 406, provide cache logicspecifying how an application cache should be prepared, and other typesof information. The deployment component 426 can utilize thecustomer-provided configuration and cache logic to configure, prime, andlaunch new instances 406. The configuration, cache logic, and otherinformation may be specified by a customer using the managementcomponent 422 or by providing this information directly to thedeployment component 426. The instance manager can be considered part ofthe deployment component.

Customer account information 428 can include any desired informationassociated with a customer of the multi-tenant environment. For example,the customer account information can include a unique identifier for acustomer, a customer address, billing information, licensinginformation, customization parameters for launching instances,scheduling information, auto-scaling parameters, previous IP addressesused to access the account, a listing of the MI's and CHI's accessibleto the customer, etc.

One or more server computers 430 can be reserved for executing softwarecomponents for managing the download of configuration data toconfigurable hardware 404 of the server computers 402. For example, theserver computer 430 can execute a logic repository service comprising aningestion component 432, a library management component 434, and adownload component 436. The ingestion component 432 can receive hostlogic and application logic designs or specifications and generateconfiguration data that can be used to configure the configurablehardware 404. The library management component 434 can be used to managesource code, user information, and configuration data associated withthe logic repository service. For example, the library managementcomponent 434 can be used to store configuration data generated from auser's design in a location specified by the user on thenetwork-attached storage 440. In particular, the configuration data canbe stored within a configurable hardware image 442 on thenetwork-attached storage 440. Additionally, the library managementcomponent 434 can manage the versioning and storage of input files (suchas the specifications for the application logic and the host logic) andmetadata about the logic designs and/or the users of the logicrepository service. The library management component 434 can index thegenerated configuration data by one or more properties such as a useridentifier, an instance type, a marketplace identifier, a machine imageidentifier, and a configurable hardware identifier, for example. Thedownload component 436 can be used to authenticate requests forconfiguration data and to transmit the configuration data to therequestor when the request is authenticated. For example, agents on theserver computers 402A-B can send requests to the download component 436when the instances 406 are launched that use the configurable hardware404. As another example, the agents on the server computers 402A-B cansend requests to the download component 436 when the instances 406request that the configurable hardware 404 be partially reconfiguredwhile the configurable hardware 404 is in operation.

The network-attached storage (NAS) 440 can be used to provide storagespace and access to files stored on the NAS 440. For example, the NAS440 can include one or more server computers used for processingrequests using a network file sharing protocol, such as Network FileSystem (NFS). The NAS 440 can include removable or non-removable media,including magnetic disks, storage area networks (SANs), redundant arraysof independent disks (RAID), magnetic tapes or cassettes, CD-ROMs, DVDs,or any other medium which can be used to store information in anon-transitory way and which can be accessed over the network 450.

The network 450 can be utilized to interconnect the server computers402A-402C, the server computers 420 and 430, and the storage 440. Thenetwork 450 can be a local area network (LAN) and can be connected to aWide Area Network (WAN) 460 so that end users can access the computeservice provider 400. It should be appreciated that the network topologyillustrated in FIG. 4 has been simplified and that many more networksand networking devices can be utilized to interconnect the variouscomputing systems disclosed herein.

FIG. 5 shows further details of an example system 500 includingcomponents of a control plane and a data plane for configuring andinterfacing to a configurable hardware platform 510. The control planeincludes software and hardware functions for initializing, monitoring,reconfiguring, and tearing down the configurable hardware platform 510.The data plane includes software and hardware functions forcommunicating between a user's application and the configurable hardwareplatform 510. The control plane can be accessible by users or serviceshaving a higher privilege level and the data plane can be accessible byusers or services having a lower privilege level. In one embodiment, theconfigurable hardware platform 510 is connected to a server computer 520using a local interconnect, such as PCIe. In an alternative embodiment,the configurable hardware platform 510 can be integrated within thehardware of the server computer 520. As one example, the server computer520 can be one of the plurality of server computers 402A-402B of thecompute service provider 400 of FIG. 4.

The server computer 520 has underlying hardware 522 including one ormore CPUs, memory, storage devices, interconnection hardware, etc.Running a layer above the hardware 522 is a hypervisor or kernel layer524. The hypervisor or kernel layer can be classified as a type 1 ortype 2 hypervisor. A type 1 hypervisor runs directly on the hosthardware 522 to control the hardware and to manage the guest operatingsystems. A type 2 hypervisor runs within a conventional operating systemenvironment. Thus, in a type 2 environment, the hypervisor can be adistinct layer running above the operating system and the operatingsystem interacts with the system hardware. Different types ofhypervisors include Xen-based, Hyper-V, ESXi/ESX, Linux, etc., but otherhypervisors can be used. A management partition 530 (such as Domain 0 ofthe Xen hypervisor) can be part of the hypervisor or separated therefromand generally includes device drivers needed for accessing the hardware522. User partitions 540 are logical units of isolation within thehypervisor. Each user partition 540 can be allocated its own portion ofthe hardware layer's memory, CPU allocation, storage, interconnectbandwidth, etc. Additionally, each user partition 540 can include avirtual machine and its own guest operating system. As such, each userpartition 540 is an abstract portion of capacity designed to support itsown virtual machine independent of the other partitions.

The management partition 530 can be used to perform management servicesfor the user partitions 540 and the configurable hardware platform 510.The management partition 530 can communicate with web services (such asa deployment service, a logic repository service 550, and a healthmonitoring service) of the compute service provider, the user partitions540, and the configurable hardware platform 510. The management servicescan include services for launching and terminating user partitions 540,and configuring, reconfiguring, and tearing down the configurable logicof the configurable hardware platform 510. As a specific example, themanagement partition 530 can launch a new user partition 540 in responseto a request from a deployment service (such as the deployment component426 of FIG. 4). The request can include a reference to an MI and/or aCHI. The MI can specify programs and drivers to load on the userpartition 540 and the CHI can specify configuration data to load on theconfigurable hardware platform 510. The management partition 530 caninitialize the user partition 540 based on the information associatedwith the MI and can cause the configuration data associated with the CHIto be loaded onto the configurable hardware platform 510. Theinitialization of the user partition 540 and the configurable hardwareplatform 510 can occur concurrently so that the time to make theinstance operational can be reduced.

The management partition 530 can be used to manage programming andmonitoring of the configurable hardware platform 510. By using themanagement partition 530 for this purpose, access to the configurationdata and the configuration ports of the configurable hardware platform510 can be restricted. Specifically, users with lower privilege levelscan be restricted from directly accessing the management partition 530.Thus, the configurable logic cannot be modified without using theinfrastructure of the compute services provider and any third party IPused to program the configurable logic can be protected from viewing byunauthorized users.

The management partition 530 can include a software stack for thecontrol plane to configure and interface to a configurable hardwareplatform 510. The control plane software stack can include aconfigurable logic (CL) application management layer 532 for managingthe configurable regions of one or more configurable hardware platformsconnected to the server computer 520. In particular, the CL applicationmanagement layer 532 can track the regions (such as regions 516A and516B) and their current status. For example, the status can indicatewhether the region is in use or not in use. When a request to load anapplication logic design onto the configurable hardware platform 510 isreceived, the CL application management layer 532 can select a regionthat is available to be configured with the application logic design,and the CL application management layer 532 can request configurationdata corresponding to the selected region. When the instance using theapplication logic design is terminated or the application logic designis torn down, the CL application management layer 532 can change thestatus of the region corresponding to the application logic design to beunused so that the region can be reused by another instance or for adifferent application logic design. Additionally, the CL applicationmanagement layer 532 can manage bandwidth allocation and apportionmentof the address space of any peripherals of the configurable hardwareplatform 510. As a specific example, the bandwidth and address space candefault to an even division of the bandwidth and address space among thedifferent regions of the configurable hardware platform 510.

The CL application management layer 532 can be used for communicatingwith web services (such as the logic repository service 550 and a healthmonitoring service), the configurable hardware platform 510, and theuser partitions 540. For example, the CL application management layer532 can issue a request to the logic repository service 550 to fetchconfiguration data in response to a user partition 540 being launched.The CL application management layer 532 can communicate with the userpartition 540 using shared memory of the hardware 522 or by sending andreceiving inter-partition messages over the interconnect connecting theserver computer 520 to the configurable hardware platform 510.Specifically, the CL application management layer 532 can read and writemessages to mailbox logic 511 of the configurable hardware platform 510.The messages can include requests by an end-user application 541 toreconfigure or tear-down a region of the configurable hardware platform510. The CL application management layer 532 can issue a request to thelogic repository service 550 to fetch configuration data in response toa request to reconfigure the configurable hardware platform 510. The CLapplication management layer 532 can initiate a tear-down sequence inresponse to a request to tear down the configurable hardware platform510. The CL application management layer 532 can perform watchdogrelated activities to determine whether the communication path to theuser partition 540 is functional.

The control plane software stack can include a CL configuration layer534 for accessing the configuration port 512 (e.g., a configurationaccess port) of the configurable hardware platform 510 so thatconfiguration data can be loaded onto the configurable hardware platform510. For example, the CL configuration layer 534 can send a command orcommands to the configuration port 512 to perform a full or partialconfiguration of the configurable hardware platform 510. The CLconfiguration layer 534 can send the configuration data (e.g., abitstream) to the configuration port 512 so that the configurable logiccan be programmed according to the configuration data. The configurationdata can specify host logic and/or application logic.

The control plane software stack can include a management driver 536 forcommunicating over the physical interconnect connecting the servercomputer 520 to the configurable hardware platform 510. The managementdriver 536 can encapsulate commands, requests, responses, messages, anddata originating from the management partition 530 for transmission overthe physical interconnect. Additionally, the management driver 536 cande-encapsulate commands, requests, responses, messages, and data sent tothe management partition 530 over the physical interconnect.Specifically, the management driver 536 can communicate with themanagement function 513 of the configurable hardware platform 510. Forexample, the management function 513 can be a physical or virtualfunction mapped to an address range during an enumeration of devicesconnected to the physical interconnect. The management driver 536 cancommunicate with the management function 513 by addressing transactionsto the address range assigned to the management function 513.

The control plane software stack can include a CL management andmonitoring layer 538. The CL management and monitoring layer 538 canmonitor and analyze transactions occurring on the physical interconnectto determine a health of the configurable hardware platform 510 and/orto determine usage characteristics of the configurable hardware platform510.

The configurable hardware platform 510 can include non-configurable hardmacros and configurable logic. The hard macros can perform specificfunctions within the configurable hardware platform 510, such asinput/output blocks (e.g., serializer and deserializer (SERDES) blocksand gigabit transceivers), analog-to-digital converters, memory controlblocks, test access ports, and a configuration port 512. Theconfigurable logic can be programmed or configured by loadingconfiguration data onto the configurable hardware platform 510. Forexample, the configuration port 512 can be used for loading theconfiguration data. As one example, configuration data can be stored ina memory (such as a Flash memory) accessible by the configuration port512 and the configuration data can be automatically loaded during aninitialization sequence (such as during a power-on sequence) of theconfigurable hardware platform 510. Additionally, the configuration port512 can be accessed using an off-chip processor or an interface withinthe configurable hardware platform 510.

The configurable logic can be programmed to include host logic and oneor more application logic designs. The host logic can shield theinterfaces of at least some of the hard macros from the end-users sothat the end-users have limited access to the hard macros and to thephysical interconnect. For example, the host logic can include themailbox logic 511, the configuration port 512, the management function513, the host interface 514, and the application function 515. The hostlogic can encapsulate and shield one application design from anotherapplication design so that multiple application designs can concurrentlyoperate on the configurable hardware platform 510. The end-users cancause the application logic to be loaded into one of the configurableregions 516A-B of the configurable hardware platform 510. The end-userscan communicate with the configurable regions 516A-B from the userpartitions 540 (via the application functions 515A-B). Specifically, afirst user partition can communicate with the configurable region 516Ausing the application function 515A and a second user partition cancommunicate with the configurable region 516B using the applicationfunction 515B.

The host interface logic 514 can include circuitry (e.g., hard macrosand/or configurable logic) for signaling on the physical interconnectand implementing a communications protocol. The communications protocolspecifies the rules and message formats for communicating over theinterconnect. Additionally, the host interface logic 514 can apportionthe bandwidth of outgoing transactions between the application functions515A-B. The application functions 515A-B can be used to communicate withdrivers of the user partitions 540A-C. Specifically, each of theapplication functions 515A-B can be a physical or virtual functionmapped to an address range during an enumeration of devices connected tothe physical interconnect. The application drivers can communicate withone of the application functions 515A-B by addressing transactions tothe address range assigned to the given application function 515A-B.Specifically, the application functions 515A-B can communicate with anapplication logic management driver 542 to exchange commands, requests,responses, messages, and data over the control plane. Each of theapplication functions 515A-B can communicate with an application logicdata plane driver 543 to exchange commands, requests, responses,messages, and data over the data plane.

The mailbox logic 511 can include one or more buffers and one or morecontrol registers. For example, a given control register can beassociated with a particular buffer and the register can be used as asemaphore to synchronize between the management partition 530 and theuser partition 540. As a specific example, if a partition can modify avalue of the control register, the partition can write to the buffer.The buffer and the control register can be accessible from both themanagement function 513 and the application functions 515A-B. When themessage is written to the buffer, another control register (e.g., themessage ready register) can be written to indicate the message iscomplete. The message ready register can polled by the partitions todetermine if a message is present, or an interrupt can be generated andtransmitted to the partitions in response to the message ready registerbeing written.

The user partition 540 can include a software stack for interfacing anend-user application 540 to the configurable hardware platform 510. Theapplication software stack can include functions for communicating withthe control plane and the data plane. Specifically, the applicationsoftware stack can include a CL-Application API 544 for providing theend-user application 540 with access to the configurable hardwareplatform 510. The CL-Application API 544 can include a library ofmethods or functions for communicating with the configurable hardwareplatform 510 and the management partition 530. For example, the end-userapplication 541 can send a command or data to the configurableapplication logic 516 by using an API of the CL-Application API 544. Inparticular, the API of the CL-Application API 544 can interface with theapplication logic (AL) data plane driver 543 which can generate atransaction targeted to one of the application functions 515A-B whichcan communicate with the corresponding configurable application logic516A-B. In this manner, the end-user application 541 can cause theapplication logic to receive, process, and/or respond with data topotentially accelerate tasks of the end-user application 541. As anotherexample, the end-user application 541 can send a command or data to themanagement partition 530 by using an API of the CL-Application API 544.In particular, the API of the CL-Application API 544 can interface withthe AL management driver 542 which can generate a transaction targetedto one of the application functions 515A-B which can communicate withthe mailbox logic 511. In this manner, the end-user application 541 cancause the management partition 530 to provide operational or metadataabout the configurable hardware platform 510 and/or to request that theconfigurable application logic 516A-B be reconfigured.

The application software stack in conjunction with the hypervisor orkernel 524 can be used to limit the operations available to perform overthe physical interconnect by the end-user application 541. For example,the compute services provider can provide the AL management driver 542,the AL data plane driver 543, and the CL-Application API 544 (such as byassociating the files with a machine image). These components can beprotected from modification by only permitting users and services havinga higher privilege level than the end-user to write to the files. The ALmanagement driver 542 and the AL data plane driver 543 can be restrictedto using only addresses within the address range of a correspondingapplication function 515A-B. Additionally, an input/output memorymanagement unit (I/O MMU) can restrict interconnect transactions to bewithin the address ranges of the corresponding application function515A-B or the management function 513. As a specific example, the userpartition 540A can be assigned to use the application function 515A andits corresponding configurable region for application logic 516A. Theuser partition 540B can be assigned to use the application function 515Band its corresponding configurable region for application logic 516B.The I/O MMU can enforce access restrictions so that the user partition540A can only write to the application function 515A, the applicationfunction 515A can only write to the user partition 540A, the userpartition 540B can only write to the application function 515B, and theapplication function 515B can only write to the user partition 540B.

FIG. 6 is a sequence diagram of an example method 600 of fetchingconfiguration data, configuring an instance of configurable hardware ina multi-tenant environment using the configuration data, and using theinstance of the configurable hardware. The sequence diagram illustratesa series of steps used by different elements of the compute servicesinfrastructure that are used to configure the configurable logic. As oneexample, the infrastructure components of the compute services providercan include a marketplace 610, a customer instance 612, a control plane614, a configurable hardware platform 616, and a logic repositoryservice 618. The marketplace service 610 can receive configuration datafor hardware accelerators created by end-users or by independenthardware developers that provide or market their accelerators toend-users of the compute services provider. The marketplace service 610can provide a listing of accelerators that are available for purchase orfor licensing so that end-users can find a hardware accelerator suitedfor their needs. The customer instance 612 can be a server computer andits associated software that is launched in response to an end-userdeploying resources of the compute services provider. The customerinstance can include control plane software 614, which can be used tomanage the configuration of the configurable hardware platform 616. Theconfigurable hardware platform 616 can include reconfigurable logic andhost logic, as described above. The logic repository service 618 caninclude a repository of configuration data that can be indexed byproduct codes, machine instance identifiers, and/or configurablehardware identifiers, for example. The logic repository service 618 canreceive a request for configuration data using one of the indexes, andcan return the configuration data to the control plane.

The components of the compute service provider infrastructure can beused at various phases during the deployment and use of a customerinstance 612. For example, the phases can include a configuration datafetching phase 620, an application logic configuration phase 630, and anapplication phase 640.

The configuration data fetching phase 620 can include identifying anapplication logic design and a reconfigurable region for placing theapplication logic. Configuration data for the application logic andcorresponding to the reconfigurable region can be fetched from a logicrepository service 618. Specifically, an end-user of the computeservices can subscribe and launch 622 a machine instance using themarketplace service 610. The marketplace service 610 can cause a machineimage to be loaded 624 on a server computer at so that a customerinstance 612 can initialized. The machine image can include applicationsoftware written and/or used by the end-user and control plane softwareprovided by the compute services provider. While a virtual machineinstance is being booted for the customer, a request 626 for applicationlogic can be sent to the control plane 614. The control plane 614 canmap the application logic to a particular unused region or area of theconfigurable hardware platform 616. By having the control plane 614select the reconfigurable region, the details of selecting the regioncan be abstracted away from the customer instance 612. The control plane614 can then send a request to fetch 628 configuration datacorresponding to the application logic and the reconfigurable regionfrom the logic repository service 618. The logic repository service 618can reply 629 with the configuration data. Thus, the control planesoftware at 614 can receive a copy of configuration data correspondingto the application logic so that the application logic can be loadedonto the configurable hardware platform to configure the selected regionof the configurable hardware platform.

The configuration phase 630 can include loading the configuration dataonto the configurable hardware platform 616. The configuration phase 630can include cleaning 632 the configurable hardware platform. Forexample, cleaning 632 the configurable hardware platform can includewriting to any external memories (e.g., the public peripherals) incommunication with the configurable hardware platform and/or internalmemories (e.g., block RAMs) so that a prior customer's data is notobservable by the present customer. Cleaning 632 the memories caninclude writing all zeroes, writing all ones, and/or writing randompatterns to the storage locations of the memories. Additionally, theconfigurable logic memory of the configurable hardware platform 616 canbe fully or partially scrubbed. After the configurable hardware platform616 is cleaned, a host logic version that is loaded on the configurablehardware platform 616 can be returned 634 to the control plane 614. Thehost logic version can be used to verify 635 whether the applicationlogic is compatible with the host logic that is loaded on theconfigurable hardware platform 616. If the host logic and applicationlogic are not compatible, then the configuration phase 630 can abort(not shown). Alternatively, if the host logic and the application logicare compatible, then the configuration phase 630 can continue at 636.The application logic can be copied from the control plane 614 to theconfigurable hardware platform 616 so that the application logic can beloaded 636 into the selected region of the configurable hardwareplatform 616. After loading 636, the configurable hardware platform 616can indicate 637 that the functions (e.g., the application logic) loadedon the configurable hardware platform 616 are ready. The control plane614 can indicate 638 to the customer instance 612 that the applicationlogic is initialized and ready for use.

The application phase 640 can begin after the application logic isinitialized. The application phase 640 can include executing theapplication software on the customer instance 612 and executing theapplication logic on the configurable hardware platform 616. Inparticular, the application software of the customer instance 612 can bein communication 642 with the application logic of the configurablehardware platform 616. For example, the application software can causedata to be transferred to the application logic, the data can beprocessed by the application logic, and the processed data and/or statusinformation can be returned to the application software. The applicationlogic can include specialized or customized hardware that canpotentially accelerate processing speed compared to using only softwareon a general purpose computer. The application logic can perform thesame functions for the duration of the customer instance 612 or theapplication logic can be adapted or reconfigured while the customerinstance 612 is executing. For example, the application softwareexecuting on the customer instance 612 can request that differentapplication logic be loaded onto the configurable hardware platform 616.In particular, the application software can issue a request 644 to theconfigurable hardware platform 616 which can forward 646 the request tothe control plane 614. The control plane 614 can begin fetching the newapplication logic at 628 from the logic repository service 618. When newapplication logic is loaded onto a running customer instance, thecleaning 632 step can be omitted since the customer is not changing forthe customer instance 612.

Additionally, a tear-down phase (not shown) can be used to clear orclean the configurable hardware platform 616 so that customer data isfurther protected. For example, the internal and/or external memories ofthe configurable hardware platform 616 can be scrubbed and/or theconfiguration logic memories associated with the application logic canbe scrubbed as part of a tear-down sequence when a customer stops usingthe customer instance 612. Specifically, the internal memories, externalmemories, and/or configuration logic memories can be overwritten withall zeroes, all ones, random values, and/or predefined values. Forexample, the configuration logic memories can be written with valuesthat configure the reconfigurable logic to be in a low-power state.

FIG. 7 is a flow diagram of an example method 700 of using aconfigurable hardware platform. At 710, host logic can be loaded on afirst region of reconfigurable logic so that the configurable hardwareplatform performs operations of the host logic. The host logic caninclude a control plane function used for enforcing restricted accessfor transactions from a host interface. For example, the control planefunction can reject transactions that are outside of an address rangeassigned to the control plane function. Additionally, the host logic caninclude logic for limiting or restricting the application logic fromusing hard macros of the configurable hardware platform and accessingthe physical interfaces to a host device. Thus, the host logic canencapsulate the application logic so that the interfaces to hard macrosand to other components of the computing infrastructure are managed bythe host logic.

The host logic can be loaded at one time or incrementally. For example,the host logic can include static logic that is loaded upon deassertionof a reset signal of the configurable hardware platform. As a specificexample, configuration data corresponding to the static logic can bestored in a flash memory of the configurable hardware platform, and thecontents of the flash memory can be used to program the configurablehardware platform with the static host logic. In one embodiment, thestatic logic can be loaded without intervention by a host computer(e.g., a customer instance). Additionally or alternatively, the hostlogic can include reconfigurable logic that is loaded after the staticlogic is loaded. For example, the reconfigurable host logic can be addedwhile the static host logic is operating. In particular, thereconfigurable host logic can be loaded upon receiving a transactionrequesting that the reconfigurable host logic be loaded. For example,the transaction can be transmitted from a host computer over a physicalinterconnect connecting the configurable hardware platform to the hostcomputer.

By dividing the host logic into a static logic component and areconfigurable logic component, the host logic can be incrementallyloaded onto the configurable hardware platform. For example, the staticlogic can include base functionality of the host logic, such ascommunication interfaces, enumeration logic, and configurationmanagement logic. By providing the communication interfaces in thestatic logic, the configurable hardware platform can be discovered orenumerated on the physical interconnect as the computing system ispowered on and/or is reset. The reconfigurable logic can be used toprovide updates to the host logic and to provide higher-levelfunctionality to the host logic. For example, some interconnecttechnologies have time limits for enumerating devices attached to theinterconnect. The time to load host logic onto the configurable hardwareplatform can be included in the time budget allotted for enumeration andso the initial host logic can be sized to be loaded relatively quickly.Thus, the static logic can be a subset of the host logic functionalityso that the configurable hardware platform can be operational within thetime limits specified by the interconnect technology. The reconfigurablelogic can provide additional host logic functionality to be added afterthe enumeration or boot up sequence is complete. As one example, hostlogic that is associated with the data plane (such as a DMA engine, CHPfabric, peripheral fabric, or a public peripheral interface) can beloaded as reconfigurable logic after the static logic has been loaded.

At 720, a first application logic design can be loaded on a secondregion of the reconfigurable logic in response to receiving a firsttransaction at the host interface. The second region of thereconfigurable logic can be non-overlapping with the first region of thereconfigurable logic so that the host logic is not modified.Additionally, the second region of the reconfigurable logic can have aninterface to static host logic. The host logic can analyze the firsttransaction to ensure that the first transaction satisfies accesscriteria of the control plane function before the first applicationlogic design is loaded. If the access criteria of the control plane issatisfied, the first application logic design can be loaded. The firsttransaction can satisfy the access criteria by having an address withina given range of addresses, or by including an authorization token, forexample. For example, the first transaction can include an addresscorresponding to a control register of the host logic to initiateloading the application logic. As another example, an authorizationtoken can be verified by the host logic to determine whether the requestis authorized.

At 730, a second application logic design can be loaded on a thirdregion of the reconfigurable logic in response to receiving a secondtransaction at the host interface. The third region of thereconfigurable logic can be non-overlapping with the first and secondregions of the reconfigurable logic so that the host logic and the firstapplication logic design are not modified. Additionally, the thirdregion of the reconfigurable logic can have an interface to static hostlogic. The second and third regions can be isolated from each other sothat there is no direct communication path between the second and thirdregions. Similar to the first transaction, the host logic can analyzethe second transaction to ensure that the second transaction satisfiesaccess criteria of the control plane function before the secondapplication logic design is loaded.

At 740, the host logic can be used to arbitrate between resources ofeach of the first application logic design and the second applicationlogic design. As one example, the host logic can be used to control anamount of bandwidth used by each of the first application logic designand the second application logic design when transmitting informationfrom the host interface. For example, the host logic can include aformatting and control layer between the host interface and each of theapplication logic designs. In particular, the formatting and controllayer can include a streaming interface for receiving data from each ofthe application logic designs. The streamed data can be partitioned(e.g., packetized) and formatted so that the data can be transmittedfrom the host interface. The formatting and control layer can partitionthe streamed data into different sized blocks so that latency andbandwidth usage of the host interface can be managed. For example, theformatting and control layer can track the amount of data transmittedfrom the host interface that originates from each of the applicationlogic designs, and the formatting and control layer can arbitratebetween the different application logic designs so that the bandwidthcan be apportioned between the different application logic designs. As aspecific example, the bandwidth can be equally divided between thedifferent application logic designs. As another example, theapportionment of the bandwidth can be specified using control registersthat are accessible from the control plane function of the host logic.The bandwidth can be apportioned based on raw bandwidth (e.g., includingthe bandwidth for sending control information of the transaction) oreffective bandwidth which accounts for only the data that istransmitted. By interposing the formatting and translation layer betweenthe host interface and the application logic designs, the security andavailability of the host computer can potentially be increased becausethe application logic designs can be restricted from directly creatingtransactions and/or viewing transactions of the physical interconnect ordifferent application logic designs. Thus, the use of the formatting andtranslation layer can protect the integrity and privacy of transactionsoccurring on the physical interconnect.

As another example, the host logic can be used to control an amount ofinternal or external resources used by each of the first applicationlogic design and the second application logic design. As a specificexample, the host logic can be used to control an amount of energy orpower used by each of the application logic designs. In particular, theconfigurable hardware platform can have a limited power budget that canbe divided between the different application logic designs. The hostlogic can estimate an energy consumption of each application designbased on a size (e.g., gate count) of the design and a frequency of oneor more clocks of the design. Alternatively, an estimated energyconsumption can be loaded into control registers of the host logic wheneach of the application logic designs are loaded onto the configurablehardware platform. The host logic can be used to control the energyconsumed by each of the application logic designs so that theapplication logic designs conform to the power budget of theconfigurable hardware platform. Controlling the energy consumed by anapplication logic design can include gating or changing the frequency ofone or more clocks of the application logic design, and gating the poweror changing the voltage of all or a portion of the application logicdesign.

At 750, the host logic can be used as an interface between a sharedperipheral and the first application logic design and the secondapplication logic design. As described above, the shared peripherals caninclude memory, storage devices, and/or other configurable hardwareplatforms. The interface can format all transfers between the sharedperipheral and the application logic designs so that the applicationlogic designs are not burdened with conforming to low-level details ofthe transfer protocol and so that shared peripherals are not misused(such as by causing a malfunction or accessing privileged information).The host logic can apportion bandwidth of data transfers between theshared peripheral and the first application logic design and the secondapplication logic design. For example, the bandwidth can be apportionedbased on a fixed apportionment (e.g., equally weighted) or a programmedapportionment. The host logic can enforce a size of data transfersbetween the shared peripheral and the first application logic design andthe second application logic design. As one example, a latency of thetransfers may be reduced by decreasing the size of the data transfers.As another example, an effective bandwidth or utilization may beincreased by increasing the size of the data transfers.

The shared peripheral can include multiple functions, registers, and/orstorage locations that are indexed by different respective addresseswithin a range of addresses assigned to the shared peripheral. Thedifferent functions, registers, and/or storage locations can be dividedbetween the different application logic designs so that each applicationlogic design can have exclusive access to different portions of theshared peripheral. For example, the addresses of the shared peripheralcan be divided into multiple address ranges, and each application logicdesign can be given access to a different address range. In particular,the host logic can restrict access from the first application logicdesign to a first range of addresses of the shared peripheral and canrestrict access from the second application logic design to a secondrange of addresses of the shared peripheral. Alternatively oradditionally, the shared peripheral can have shared functions,registers, and/or storage locations. Thus, each application logic designcan be granted access to a private portion (accessible using one rangeof addresses) and a shared portion (accessible using a different rangeof addresses) of the shared peripheral.

The host logic can also be used to analyze transactions of theapplication logic designs. For example, the host logic can trackoperational characteristics, such as bandwidth, latency, and otherperformance characteristics of the application logic designs and/or thehost logic. As another example, the host logic can analyze transactionsto determine if the transactions conform to predefined criteria. If thetransactions do not conform to the criteria, then the host logic canpotentially cancel transactions originating at the application logicdesigns.

FIG. 8 is a system diagram showing an example of a server computer 800including server hardware 810 and an integrated circuit 820 withmultiple customer logic designs 830A-C configured on the integratedcircuit 820. The server hardware 810 can include a CPU, memory,connectors, interfaces, power supplies, fans, and various other hardwarecomponents. The integrated circuit 820 can include reconfigurable logicthat can be programmed or configured to perform a computing task. Forexample, the integrated circuit 820 can be an FPGA, CPLD, or otherprogrammable hardware device. The integrated circuit 820 can beconnected to the server hardware 810 using an interconnect 840 thatprovides a low latency communication path between the server hardware810 and the integrated circuit 820. For example, the integrated circuit820 and the server hardware 810 can communicate by sending signals overan interconnect using a communications protocol such as PCI,PCI-Express, or other bus or serial interconnect protocol. As oneexample, the server hardware 810 and the integrated circuit 820 can beconnected to a motherboard of the server computer 800. As anotherexample, the integrated circuit 820 can be mounted on an expansion cardthat is inserted into an expansion slot of the server computer 800. Bytightly coupling the server hardware 810 and the integrated circuit 820using a low latency interconnect, the integrated circuit 820 can be usedas a hardware accelerator for many compute-intensive applicationsexecuting on the server hardware 810. In contrast, a hardwareaccelerator connected over a higher latency interconnect, such as anEthernet or Internet Protocol (IP) network may provide feweropportunities to accelerate applications because of the communicationsoverhead between the server hardware and the hardware accelerator.

The integrated circuit 820 can include host logic 850 and multiplecustomer logic designs 830A-C. The host logic 850 can be logic that isdeployed by a compute service provider to enforce a level of devicemanageability and security. The host logic 850 can include static logicand reconfigurable logic. For example, the static logic can be loaded atboot time from an on-board flash memory device. The host reconfigurablelogic can be loaded after boot time (e.g., at run-time) using aninternal or external flash memory device and a dedicatedmicrocontroller, or a by the server hardware 810 over the interconnect840. The host logic 850 can be used to protect the server computer 800from attacks initiated by the customer logic designs 830A-C.Specifically, the host logic 850 encapsulates or sandboxes the customerlogic designs 830A-C by owning or controlling the interface to theinterconnect 840. As a specific example, the interconnect 840 can bePCI-Express and the host logic 850 can protect the server computer 800from PCI-Express-level attacks because the host logic 850 owns thePCI-Express interface of the integrated circuit 820 and controls thePCI-Express addresses and the PCI-Express bus, device, function, andalternative routing identifier.

The host logic 850 can include arbitration logic 860 that can be usedfor apportioning resources (such as bandwidth over the interconnect 840)between the different customer logic designs 830A-C. For example, eachof the customer logic designs 830A-C can be operated by differentcustomers. The compute service provider can use the host logic 850 toload the customer logic designs 830A-C onto different respectivereconfigurable logic regions of the integrated circuit 820. Thearbitration logic 860 can provide a consistent quality of service toeach customer by providing the different customers access to theinterconnect 840 at different times. Specifically, each customer can begiven access to the interconnect 840 in a round-robin or other scheduledorder. The arbitration logic 860 can limit the bandwidth provided toeach customer logic design 830A-C to a specified amount of bandwidth.For example, if the integrated circuit 820 includes four differentreconfigurable logic regions for customer logic designs, the arbitrationlogic 860 can limit the bandwidth provided to each customer logic designto one-fourth of the available bandwidth of the interconnect 840. Inthis manner, the customers cannot interfere with one another, such as byusing up all of the available bandwidth, and the customers cannotdirectly or indirectly observe whether other customers are executingcustomer logic designs on the integrated circuit 820. For example, thecustomers cannot reliably use latency or bandwidth between theintegrated circuit 820 and the server computer 810 to observe whetherother customers are executing customer logic designs on the integratedcircuit 820.

FIG. 9 depicts a generalized example of a suitable computing environment900 in which the described innovations may be implemented. The computingenvironment 900 is not intended to suggest any limitation as to scope ofuse or functionality, as the innovations may be implemented in diversegeneral-purpose or special-purpose computing systems. For example, thecomputing environment 900 can be any of a variety of computing devices(e.g., desktop computer, laptop computer, server computer, tabletcomputer, etc.)

With reference to FIG. 9, the computing environment 900 includes one ormore processing units 910, 915 and memory 920, 925. In FIG. 9, thisbasic configuration 930 is included within a dashed line. The processingunits 910, 915 execute computer-executable instructions. A processingunit can be a general-purpose central processing unit (CPU), processorin an application-specific integrated circuit (ASIC) or any other typeof processor. In a multi-processing system, multiple processing unitsexecute computer-executable instructions to increase processing power.For example, FIG. 9 shows a central processing unit 910 as well as agraphics processing unit or co-processing unit 915. The tangible memory920, 925 may be volatile memory (e.g., registers, cache, RAM),non-volatile memory (e.g., ROM, EEPROM, flash memory, etc.), or somecombination of the two, accessible by the processing unit(s). The memory920, 925 stores software 980 implementing one or more innovationsdescribed herein, in the form of computer-executable instructionssuitable for execution by the processing unit(s).

A computing system may have additional features. For example, thecomputing environment 900 includes storage 940, one or more inputdevices 950, one or more output devices 960, and one or morecommunication connections 970. An interconnection mechanism (not shown)such as a bus, controller, or network interconnects the components ofthe computing environment 900. Typically, operating system software (notshown) provides an operating environment for other software executing inthe computing environment 900, and coordinates activities of thecomponents of the computing environment 900.

The tangible storage 940 may be removable or non-removable, and includesmagnetic disks, magnetic tapes or cassettes, CD-ROMs, DVDs, or any othermedium which can be used to store information in a non-transitory wayand which can be accessed within the computing environment 900. Thestorage 940 stores instructions for the software 980 implementing one ormore innovations described herein.

The input device(s) 950 may be a touch input device such as a keyboard,mouse, pen, or trackball, a voice input device, a scanning device, oranother device that provides input to the computing environment 900. Theoutput device(s) 960 may be a display, printer, speaker, CD-writer, oranother device that provides output from the computing environment 900.

The communication connection(s) 970 enable communication over acommunication medium to another computing entity. The communicationmedium conveys information such as computer-executable instructions,audio or video input or output, or other data in a modulated datasignal. A modulated data signal is a signal that has one or more of itscharacteristics set or changed in such a manner as to encode informationin the signal. By way of example, and not limitation, communicationmedia can use an electrical, optical, RF, or other carrier.

Although the operations of some of the disclosed methods are describedin a particular, sequential order for convenient presentation, it shouldbe understood that this manner of description encompasses rearrangement,unless a particular ordering is required by specific language set forthbelow. For example, operations described sequentially may in some casesbe rearranged or performed concurrently. Moreover, for the sake ofsimplicity, the attached figures may not show the various ways in whichthe disclosed methods can be used in conjunction with other methods.

Any of the disclosed methods can be implemented as computer-executableinstructions stored on one or more computer-readable storage media(e.g., one or more optical media discs, volatile memory components (suchas DRAM or SRAM), or non-volatile memory components (such as flashmemory or hard drives)) and executed on a computer (e.g., anycommercially available computer, including smart phones or other mobiledevices that include computing hardware). The term computer-readablestorage media does not include communication connections, such assignals and carrier waves. Any of the computer-executable instructionsfor implementing the disclosed techniques as well as any data createdand used during implementation of the disclosed embodiments can bestored on one or more computer-readable storage media. Thecomputer-executable instructions can be part of, for example, adedicated software application or a software application that isaccessed or downloaded via a web browser or other software application(such as a remote computing application). Such software can be executed,for example, on a single local computer (e.g., any suitable commerciallyavailable computer) or in a network environment (e.g., via the Internet,a wide-area network, a local-area network, a client-server network (suchas a cloud computing network), or other such network) using one or morenetwork computers.

For clarity, only certain selected aspects of the software-basedimplementations are described. Other details that are well known in theart are omitted. For example, it should be understood that the disclosedtechnology is not limited to any specific computer language or program.For instance, the disclosed technology can be implemented by softwarewritten in C++, Java, Perl, JavaScript, Adobe Flash, or any othersuitable programming language. Likewise, the disclosed technology is notlimited to any particular computer or type of hardware. Certain detailsof suitable computers and hardware are well known and need not be setforth in detail in this disclosure.

It should also be well understood that any functionality describedherein can be performed, at least in part, by one or more hardware logiccomponents, instead of software. For example, and without limitation,illustrative types of hardware logic components that can be used includeField-programmable Gate Arrays (FPGAs), Application-specific IntegratedCircuits (ASICs), Application-specific Standard Products (AS SPs),System-on-a-chip systems (SOCs), Complex Programmable Logic Devices(CPLDs), etc.

Furthermore, any of the software-based embodiments (comprising, forexample, computer-executable instructions for causing a computer toperform any of the disclosed methods) can be uploaded, downloaded, orremotely accessed through a suitable communication means. Such suitablecommunication means include, for example, the Internet, the World WideWeb, an intranet, software applications, cable (including fiber opticcable), magnetic communications, electromagnetic communications(including RF, microwave, and infrared communications), electroniccommunications, or other such communication means.

The disclosed methods, apparatus, and systems should not be construed aslimiting in any way. Instead, the present disclosure is directed towardall novel and nonobvious features and aspects of the various disclosedembodiments, alone and in various combinations and subcombinations withone another. The disclosed methods, apparatus, and systems are notlimited to any specific aspect or feature or combination thereof, nor dothe disclosed embodiments require that any one or more specificadvantages be present or problems be solved.

In view of the many possible embodiments to which the principles of thedisclosed invention may be applied, it should be recognized that theillustrated embodiments are only preferred examples of the invention andshould not be taken as limiting the scope of the invention. Rather, thescope of the invention is defined by the following claims. We thereforeclaim as our invention all that comes within the scope of these claims.

What is claimed is:
 1. An apparatus comprising: a plurality ofreconfigurable logic regions, each reconfigurable logic regioncomprising configurable hardware to implement a respective applicationlogic design; and host logic for separately encapsulating each of thereconfigurable logic regions, the host logic comprising: a hostinterface for communicating with a processor; and a plurality of datapath functions accessible via the host interface, each data pathfunction comprising a layer for formatting data transfers between thehost interface and the application logic design of a correspondingreconfigurable logic region, wherein the host logic prevents interfacingbetween the reconfigurable logic regions.
 2. The apparatus of claim 1,wherein the host logic further comprises: a management functionaccessible via the host interface, the management function adapted tocause a reconfigurable logic region of the plurality of reconfigurablelogic regions to be configured with a particular application logicdesign in response to an authorized transaction received at the hostinterface.
 3. The apparatus of claim 1, wherein the host interface isfurther configured to enforce a maximum transfer size of the applicationlogic design of the respective reconfigurable logic regions.
 4. Theapparatus of claim 2, wherein the management function and each of thedata path functions are accessible using different non-overlappingaddress ranges for each of the respective functions.
 5. The apparatus ofclaim 1, wherein each reconfigurable logic region is configured tosupport an independent hardware accelerator.
 6. The apparatus of claim1, wherein at least a portion of the host logic is reconfigurable logicthat is loaded on the apparatus in response to an authorized transactionreceived at the host interface.
 7. The apparatus of claim 1, wherein thehost logic further comprises a translation layer between the applicationlogic design of the respective reconfigurable logic regions and a publicperipheral, the translation layer adapted to format data transfersbetween the application logic and the public peripheral.
 8. Theapparatus of claim 1, wherein the host logic and the reconfigurablelogic regions are combined in a single Integrated Circuit.
 9. Theapparatus of claim 7, wherein the host logic further comprises logic forenforcing access restrictions from the application logic design of thedifferent reconfigurable logic regions to the public peripheral.
 10. Amethod for operating a configurable hardware platform includingreconfigurable logic, the method comprising: loading host logic on afirst region of the reconfigurable logic, the host logic including ahost interface and a management function enforcing restricted access fortransactions from the host interface; loading a first application logicdesign on a second region of the reconfigurable logic in response toreceiving a first transaction at the host interface, the firsttransaction satisfying access criteria of the management function;loading a second application logic design on a third region of thereconfigurable logic in response to receiving a second transaction atthe host interface, the second transaction satisfying access criteria ofthe management function; and using the host logic to prevent interfacingbetween the reconfigurable logic regions.
 11. The method of claim 10,wherein the host logic and the reconfigurable logic regions are combinedin a single Integrated Circuit.
 12. The method of claim 11, furthercomprising: loading independent hardware accelerators into eachreconfigurable logic region.
 13. The method of claim 10, furthercomprising: using the host logic to enforce a size of data transfersbetween a shared peripheral and the first application logic design andthe second application logic design.
 14. The method of claim 13, furthercomprising: using the host logic to restrict access from the firstapplication logic design to a first range of addresses of the sharedperipheral and to restrict access from the second application logicdesign to a second range of addresses of the shared peripheral.
 15. Themethod of claim 14, further comprising: clearing one or more of aninternal memory, an external memory, or a configuration memory inresponse to tearing down the first application logic design or thesecond application logic design.
 16. An Integrated Circuit (IC),comprising: first and second reconfigurable logic regions, eachcomprising configurable hardware to implement a respective applicationlogic; and host logic including a host interface and a data pathfunction for each of the first and second configurable logic regions,wherein the host logic prevents interfacing between the reconfigurablelogic regions.
 17. The IC of claim 16, wherein the host interface isfurther configured to enforce a maximum transfer size of the applicationlogic of the respective reconfigurable logic regions.
 18. The IC ofclaim 16, wherein each of the data path functions are accessible usingdifferent non-overlapping address ranges.
 19. The IC of claim 16,wherein the host logic and the first and second reconfigurable logicregions are combined in a single Integrated Circuit.
 20. The IC of claim16, wherein the host logic further comprises logic for enforcing accessrestrictions from the first and second reconfigurable logic regions.